/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.una.pol.pweb.compraventa;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceException;
import javax.persistence.Query;
import org.postgresql.util.PSQLException;
import py.una.pol.pweb.compraventa.modelo.Cliente;
import py.una.pol.pweb.compraventa.modelo.Pago;

/**
 *
 * @author claudia
 */
public class PagoMasivo{

    public void insertarPago(String linea) {
        String[] token;
        Integer idCliente;
        Double monto;
        Double saldo;
        Date fecha;
        

        Cliente cliente = new Cliente();
        Pago pago = new Pago();

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("CompraVentaPU");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        //System.out.println(linea);
        token = linea.split("\\ ");
        try {
            
            idCliente = Integer.parseInt(token[0]);
            monto = Double.parseDouble(token[1]);
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            fecha = sdf.parse(token[2]);
            Query q = em.createNamedQuery("Cliente.findByIdcliente").setParameter("idcliente", idCliente);
            cliente = (Cliente) q.getSingleResult();
            pago.setFecha(fecha);
            pago.setMonto(monto);
            cliente.addPago(pago);

            if(pago.getMonto()>0){
            saldo=cliente.getSaldo()-pago.getMonto();
            cliente.setSaldo(saldo);
            }
            em.merge(cliente);
            em.flush();
            em.getTransaction().commit();

        } catch (ParseException pe) {
            pe.printStackTrace();
        } catch (PersistenceException sqle) {
            em.getTransaction().rollback();
            //sqle.printStackTrace();
            System.out.println("Ha ocurrido un error : Los Valores no son validos");
        } finally {
            em.close();
            emf.close();
        }

    }
}
